#pragma once

#include "Includes.h"
#include "Entity.h"
#include "Utilities.h"
#include "VMatrix.h"
#include "CTraceFilterSkipTwoEntities.h"
#include "Ray.h"
#include "Trace.h"
#include "HL2Interface.h"

namespace GameUtilities
{
	bool WorldToScreen(VMatrix& W2SMatrix, SD_Tools::Vector2& ScreenSize, SD_Tools::Vector& World, SD_Tools::Vector2* Screen);
	bool IsVisible(SD_Tools::Vector& start, SD_Tools::Vector& end, Entity* pLocal, Entity* pEnemy);
	SD_Tools::Angle CreateAimAngle(SD_Tools::Vector& Origin, SD_Tools::Vector& Target);
	bool HasGun();
	bool HasPistol();
	bool HasKnife();
	void FixAngle(SD_Tools::Angle* FixAngle);
	void AngleNormalize(SD_Tools::Vector &vIn, SD_Tools::Vector &vOut);
	CBaseCombatWeapon* GetBaseCombatWeapon(void* pEntity);
	void Predict(Entity* ent, SD_Tools::Vector& InOut, float flFactor);
	char GetWeaponChar(int Id);
	float GetWeaponRange(int Id);
	float GetAngleBetween(SD_Tools::Vector& a, SD_Tools::Vector& b);
	float GetMaxRange(SD_Tools::Vector& Origin, SD_Tools::Vector& Target, float Dist = 5.0f);
}